Fun fact: I got a new bike
[clinton/website/src/unknownlamer.org.git] / Site Software.muse
1 * Basic Setup
2
3 I work on the static content of the site using [[http://mwolson.org/projects/EmacsMuse.html][Emacs Muse]]. My muse
4 configuration is pretty long and available in my
5 [[darcsweb::site-emacs/init.d/muse.el][site-emacs repository]]. The site itself exists in a [[darcsweb::unknownlamer.org][darcs repository]]
6 which is a fork of the source repository I edit locally--the source
7 repository contains muse/image files while the site repository
8 contains html updates as a separate series of patches.
9
10 This provides a very nice editing environment and makes publishing
11 fairly easy--I push edits from my laptop to my workstation and then
12 off to [[http://hcoop.net][HCoop]] with the html updates. Almost no effort is spent dealing
13 with some dumb web interface or other pointless things making it much
14 easier for me to just write things and toss them up onto the web.
15
16 * Scripts
17
18 There are a few scripts and templates in the [[darcsweb::site-support]]
19 repository that I use to update the
20 site. [[darcsweb::site-support/update.sh]] automates the process of
21 sending patches off to the server via afs.
22
23 ** Book Database
24
25 [[Book List]] is autogenerated by [[darcsweb::site-support/books.lisp]] which
26 reads a template and a small sexp *database* of book entries and spits
27 out a muse file which is not kept under VC. This works well for me
28 currently, but I intend to eventually *upgrade* this simple system to an
29 [[http://common-lisp.net/project/elephant/][Elephant]] object database with a [[http://common-lisp.net/project/mcclim/][CLIM]] frontend for editing
30 entries. I'll probably end up writing a minimal database manager for
31 the sexp based system first.
32
33 ** RSS Feed
34
35 The site rss feed is generated by [[darcsweb::site-support/rss.lisp]]. It
36 fetches the darcs xml changelog for interesting files and then spits
37 out a tolerable feed with automagically generated links from =*.muse= to
38 =*.html=. A [[darcsweb::site-support/update-rss-binary][dumped binary]] is run from a darcs hook on the main
39 repository that handily updates the feed whenever I commit.
40
41 <code>apply posthook update-site-rss
42 apply run-posthook</code>
43
44 Boring old Apache is used to serve up the generated feed. The feed
45 stays updated when I update, and Apache deals with properly letting
46 readers know when the file last changed and whatnot.
47
48 * License
49
50 All of the scripts used to generate the site are in the public domain
51 unless otherwise mentioned in the files themselves. To use them
52 anywhere else would require modification, but a few chunks of code
53 could be generally useful for other things.